/**
 * Generate code from /{{projectName}}-core/src/main/java/{{packageName}}/{{apis}}/dto/{{apiDtos@DEFAULT}}.java.hbs
 */
package cn.ibizlab.api.dto;

import java.util.*;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.alibaba.fastjson.annotation.JSONField;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import cn.ibizlab.util.domain.DTOBase;
import cn.ibizlab.util.domain.DTOClient;
import lombok.*;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 人员[SysPersonDTO]
 *
 * @author generator
 */
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("人员DTO")
public class SysPersonDTO extends DTOBase implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 标识
     */
    @JsonProperty("id")
    @JSONField(name = "id")
    @ApiModelProperty(value = "标识", position = 0)
    private String id;

    /**
     * 名称
     */
    @JsonProperty("display_name")
    @JSONField(name = "display_name")
    @ApiModelProperty(value = "名称", position = 1)
    private String displayName;

    /**
     * 创建人
     */
    @JsonProperty("creator")
    @JSONField(name = "creator")
    @ApiModelProperty(value = "创建人", position = 2)
    private String creator;

    /**
     * 创建时间
     */
    @JsonProperty("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    @JSONField(name = "create_time" , format = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间", position = 3)
    private Date createTime;

    /**
     * 最后更新人
     */
    @JsonProperty("updater")
    @JSONField(name = "updater")
    @ApiModelProperty(value = "最后更新人", position = 4)
    private String updater;

    /**
     * 最后更新时间
     */
    @JsonProperty("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    @JSONField(name = "update_time" , format = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "最后更新时间", position = 5)
    private Date updateTime;

    /**
     * DC
     */
    @JsonProperty("dc")
    @JSONField(name = "dc")
    @ApiModelProperty(value = "DC", position = 6)
    private String dc;

    /**
     * 部门辅助查询
     */
    @JsonProperty("department_id")
    @JSONField(name = "department_id")
    @ApiModelProperty(value = "部门辅助查询", position = 7)
    private String departmentId;

    /**
     * uid/loginname
     */
    @JsonProperty("uid")
    @JSONField(name = "uid")
    @ApiModelProperty(value = "uid/loginname", position = 8)
    private String uid;

    /**
     * 密码
     */
    @JsonProperty("user_password")
    @JSONField(name = "user_password")
    @ApiModelProperty(value = "密码", position = 9)
    private String userPassword;

    /**
     * 组织机构标识
     */
    @JsonProperty("organization_id")
    @JSONField(name = "organization_id")
    @ApiModelProperty(value = "组织机构标识", position = 10)
    private String organizationId;

    /**
     * 机构编号
     */
    @JsonProperty("organization_number")
    @JSONField(name = "organization_number")
    @ApiModelProperty(value = "机构编号", position = 11)
    private String organizationNumber;

    /**
     * 组织机构名称
     */
    @JsonProperty("organization_name")
    @JSONField(name = "organization_name")
    @ApiModelProperty(value = "组织机构名称", position = 12)
    private String organizationName;

    /**
     * 人员编号
     */
    @JsonProperty("employee_number")
    @JSONField(name = "employee_number")
    @ApiModelProperty(value = "人员编号", position = 13)
    private String employeeNumber;

    /**
     * 类型
     */
    @JsonProperty("employee_type")
    @JSONField(name = "employee_type")
    @ApiModelProperty(value = "类型", position = 14)
    private String employeeType;

    /**
     * 职位
     */
    @JsonProperty("title")
    @JSONField(name = "title")
    @ApiModelProperty(value = "职位", position = 15)
    private String title;

    /**
     * 电子邮箱
     */
    @JsonProperty("mail")
    @JSONField(name = "mail")
    @ApiModelProperty(value = "电子邮箱", position = 16)
    private String mail;

    /**
     * 联系电话
     */
    @JsonProperty("telephone_number")
    @JSONField(name = "telephone_number")
    @ApiModelProperty(value = "联系电话", position = 17)
    private String telephoneNumber;

    /**
     * 移动电话
     */
    @JsonProperty("mobile")
    @JSONField(name = "mobile")
    @ApiModelProperty(value = "移动电话", position = 18)
    private String mobile;

    /**
     * 证件号
     */
    @JsonProperty("identification_number")
    @JSONField(name = "identification_number")
    @ApiModelProperty(value = "证件号", position = 19)
    private String identificationNumber;

    /**
     * 地址
     */
    @JsonProperty("postal_address")
    @JSONField(name = "postal_address")
    @ApiModelProperty(value = "地址", position = 20)
    private String postalAddress;

    /**
     * 描述
     */
    @JsonProperty("description")
    @JSONField(name = "description")
    @ApiModelProperty(value = "描述", position = 21)
    private String description;

    /**
     * DN
     */
    @JsonProperty("dn")
    @JSONField(name = "dn")
    @ApiModelProperty(value = "DN", position = 22)
    private String dn;

    /**
     * 主部门标识
     */
    @JsonProperty("mdepartment_id")
    @JSONField(name = "mdepartment_id")
    @ApiModelProperty(value = "主部门标识", position = 23)
    private String mdepartmentId;

    /**
     * 主部门
     */
    @JsonProperty("mdepartment_name")
    @JSONField(name = "mdepartment_name")
    @ApiModelProperty(value = "主部门", position = 24)
    private String mdepartmentName;

    /**
     * 用户组查询辅助属性
     */
    @JsonProperty("organizational_role_id")
    @JSONField(name = "organizational_role_id")
    @ApiModelProperty(value = "用户组查询辅助属性", position = 25)
    private String organizationalRoleId;

    /**
     * 状态
     */
    @JsonProperty("status")
    @JSONField(name = "status")
    @ApiModelProperty(value = "状态", position = 26)
    private String status;

    /**
     * 头像
     */
    @JsonProperty("avatar")
    @JSONField(name = "avatar")
    @ApiModelProperty(value = "头像", position = 27)
    private String avatar;

    /**
     * 成员
     */
    @JsonProperty("member_of")
    @JSONField(name = "member_of")
    @ApiModelProperty(value = "成员", position = 28)
    private List<SysMemberDTO> memberOf;


    /**
     * 设置 [名称]
     */
    public SysPersonDTO setDisplayName(String displayName) {
        this.displayName = displayName;
        this.modify("display_name", displayName);
        return this;
    }

    /**
     * 设置 [DC]
     */
    public SysPersonDTO setDc(String dc) {
        this.dc = dc;
        this.modify("dc", dc);
        return this;
    }

    /**
     * 设置 [部门辅助查询]
     */
    public SysPersonDTO setDepartmentId(String departmentId) {
        this.departmentId = departmentId;
        this.modify("department_id", departmentId);
        return this;
    }

    /**
     * 设置 [uid/loginname]
     */
    public SysPersonDTO setUid(String uid) {
        this.uid = uid;
        this.modify("uid", uid);
        return this;
    }

    /**
     * 设置 [密码]
     */
    public SysPersonDTO setUserPassword(String userPassword) {
        this.userPassword = userPassword;
        this.modify("user_password", userPassword);
        return this;
    }

    /**
     * 设置 [组织机构标识]
     */
    public SysPersonDTO setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
        this.modify("organization_id", organizationId);
        return this;
    }

    /**
     * 设置 [机构编号]
     */
    public SysPersonDTO setOrganizationNumber(String organizationNumber) {
        this.organizationNumber = organizationNumber;
        this.modify("organization_number", organizationNumber);
        return this;
    }

    /**
     * 设置 [组织机构名称]
     */
    public SysPersonDTO setOrganizationName(String organizationName) {
        this.organizationName = organizationName;
        this.modify("organization_name", organizationName);
        return this;
    }

    /**
     * 设置 [人员编号]
     */
    public SysPersonDTO setEmployeeNumber(String employeeNumber) {
        this.employeeNumber = employeeNumber;
        this.modify("employee_number", employeeNumber);
        return this;
    }

    /**
     * 设置 [类型]
     */
    public SysPersonDTO setEmployeeType(String employeeType) {
        this.employeeType = employeeType;
        this.modify("employee_type", employeeType);
        return this;
    }

    /**
     * 设置 [职位]
     */
    public SysPersonDTO setTitle(String title) {
        this.title = title;
        this.modify("title", title);
        return this;
    }

    /**
     * 设置 [电子邮箱]
     */
    public SysPersonDTO setMail(String mail) {
        this.mail = mail;
        this.modify("mail", mail);
        return this;
    }

    /**
     * 设置 [联系电话]
     */
    public SysPersonDTO setTelephoneNumber(String telephoneNumber) {
        this.telephoneNumber = telephoneNumber;
        this.modify("telephone_number", telephoneNumber);
        return this;
    }

    /**
     * 设置 [移动电话]
     */
    public SysPersonDTO setMobile(String mobile) {
        this.mobile = mobile;
        this.modify("mobile", mobile);
        return this;
    }

    /**
     * 设置 [证件号]
     */
    public SysPersonDTO setIdentificationNumber(String identificationNumber) {
        this.identificationNumber = identificationNumber;
        this.modify("identification_number", identificationNumber);
        return this;
    }

    /**
     * 设置 [地址]
     */
    public SysPersonDTO setPostalAddress(String postalAddress) {
        this.postalAddress = postalAddress;
        this.modify("postal_address", postalAddress);
        return this;
    }

    /**
     * 设置 [描述]
     */
    public SysPersonDTO setDescription(String description) {
        this.description = description;
        this.modify("description", description);
        return this;
    }

    /**
     * 设置 [DN]
     */
    public SysPersonDTO setDn(String dn) {
        this.dn = dn;
        this.modify("dn", dn);
        return this;
    }

    /**
     * 设置 [主部门标识]
     */
    public SysPersonDTO setMdepartmentId(String mdepartmentId) {
        this.mdepartmentId = mdepartmentId;
        this.modify("mdepartment_id", mdepartmentId);
        return this;
    }

    /**
     * 设置 [主部门]
     */
    public SysPersonDTO setMdepartmentName(String mdepartmentName) {
        this.mdepartmentName = mdepartmentName;
        this.modify("mdepartment_name", mdepartmentName);
        return this;
    }

    /**
     * 设置 [用户组查询辅助属性]
     */
    public SysPersonDTO setOrganizationalRoleId(String organizationalRoleId) {
        this.organizationalRoleId = organizationalRoleId;
        this.modify("organizational_role_id", organizationalRoleId);
        return this;
    }

    /**
     * 设置 [状态]
     */
    public SysPersonDTO setStatus(String status) {
        this.status = status;
        this.modify("status", status);
        return this;
    }

    /**
     * 设置 [头像]
     */
    public SysPersonDTO setAvatar(String avatar) {
        this.avatar = avatar;
        this.modify("avatar", avatar);
        return this;
    }

    /**
     * 设置 [成员]
     */
    public SysPersonDTO setMemberOf(List<SysMemberDTO> memberOf) {
        this.memberOf = memberOf;
        this.modify("member_of", memberOf);
        return this;
    }


}
